Add an GError parameter.
authorMatthias Clasen <mclasen@redhat.com>
Wed, 21 Jun 2006 05:56:14 +0000 (05:56 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Wed, 21 Jun 2006 05:56:14 +0000 (05:56 +0000)
2006-06-21  Matthias Clasen  <mclasen@redhat.com>

* gtk/gtkprintbackend.h:
* gtk/gtkprintbackend.c (gtk_print_backend_print_stream): Add an
GError parameter.

* modules/printbackends/file/gtkprintbackendfile.c
(gtk_print_backend_file_print_stream):
* modules/printbackends/lpr/gtkprintbackendlpr.c
(gtk_print_backend_lpr_print_stream):
* modules/printbackends/cups/gtkprintbackendcups.c
(gtk_print_backend_cups_print_stream):
* gtk/gtkprintjob.c (gtk_print_job_send): Update all callers and
implementations.

ChangeLog
ChangeLog.pre-2-10
gtk/gtkprintbackend.c
gtk/gtkprintbackend.h
gtk/gtkprintjob.c
modules/printbackends/cups/gtkprintbackendcups.c
modules/printbackends/file/gtkprintbackendfile.c
modules/printbackends/lpr/gtkprintbackendlpr.c

index 31e00dfa52329e92a536d633b96b3343048b1607..ddf504ac565476fb74ffdd043d53735d16772d5c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
 2006-06-21  Matthias Clasen  <mclasen@redhat.com>
 
+       * gtk/gtkprintbackend.h: 
+       * gtk/gtkprintbackend.c (gtk_print_backend_print_stream): Add an
+       GError parameter.
+
+       * modules/printbackends/file/gtkprintbackendfile.c 
+       (gtk_print_backend_file_print_stream): 
+       * modules/printbackends/lpr/gtkprintbackendlpr.c 
+       (gtk_print_backend_lpr_print_stream): 
+       * modules/printbackends/cups/gtkprintbackendcups.c 
+       (gtk_print_backend_cups_print_stream): 
+       * gtk/gtkprintjob.c (gtk_print_job_send): Update all callers and
+       implementations.
+
        * modules/printbackends/cups/gtkprintbackendcups.c: Remove the
        GError parameter from cups_request_execute(), and various other
        cleanups.
index 31e00dfa52329e92a536d633b96b3343048b1607..ddf504ac565476fb74ffdd043d53735d16772d5c 100644 (file)
@@ -1,5 +1,18 @@
 2006-06-21  Matthias Clasen  <mclasen@redhat.com>
 
+       * gtk/gtkprintbackend.h: 
+       * gtk/gtkprintbackend.c (gtk_print_backend_print_stream): Add an
+       GError parameter.
+
+       * modules/printbackends/file/gtkprintbackendfile.c 
+       (gtk_print_backend_file_print_stream): 
+       * modules/printbackends/lpr/gtkprintbackendlpr.c 
+       (gtk_print_backend_lpr_print_stream): 
+       * modules/printbackends/cups/gtkprintbackendcups.c 
+       (gtk_print_backend_cups_print_stream): 
+       * gtk/gtkprintjob.c (gtk_print_job_send): Update all callers and
+       implementations.
+
        * modules/printbackends/cups/gtkprintbackendcups.c: Remove the
        GError parameter from cups_request_execute(), and various other
        cleanups.
index 613d88d4be97208329892ab0b2ab78c0d0a43818..137312f499eb16f1d6c43e1feb439c451514a9f4 100644 (file)
@@ -579,7 +579,8 @@ gtk_print_backend_print_stream (GtkPrintBackend        *backend,
                                 gint                    data_fd,
                                 GtkPrintJobCompleteFunc callback,
                                 gpointer                user_data,
-                               GDestroyNotify          dnotify)
+                               GDestroyNotify          dnotify,
+                               GError                **error)
 {
   g_return_if_fail (GTK_IS_PRINT_BACKEND (backend));
 
@@ -588,7 +589,8 @@ gtk_print_backend_print_stream (GtkPrintBackend        *backend,
                                                       data_fd,
                                                       callback,
                                                       user_data,
-                                                      dnotify);
+                                                      dnotify,
+                                                      error);
 }
 
 void
index ba08c2d546f9199a0a0ac820f5ec2a21f24fc674..abebbd11558d40c94ff91b3b8b955d37251d23f9 100644 (file)
@@ -76,7 +76,8 @@ struct _GtkPrintBackendClass
                                                             gint                    data_fd,
                                                             GtkPrintJobCompleteFunc callback,
                                                             gpointer                user_data,
-                                                            GDestroyNotify          dnotify);
+                                                            GDestroyNotify          dnotify,
+                                                            GError                **error);
 
   /* Printer methods: */
   void                  (*printer_request_details)           (GtkPrinter          *printer);
@@ -137,7 +138,8 @@ void        gtk_print_backend_print_stream         (GtkPrintBackend         *pri
                                                    gint                     data_fd,
                                                    GtkPrintJobCompleteFunc  callback,
                                                    gpointer                 user_data,
-                                                   GDestroyNotify           dnotify);
+                                                   GDestroyNotify           dnotify,
+                                                   GError                 **error);
 GList *     gtk_print_backend_load_modules         (void);
 void        gtk_print_backend_destroy              (GtkPrintBackend         *print_backend);
 
index 9f7ffebf5b7bff745adfea3071336350daa98996..88f1d58e8fa1c21e6e8d2eb8b523913b9573a583 100644 (file)
@@ -648,6 +648,7 @@ gtk_print_job_send (GtkPrintJob             *job,
                    GError                 **error)
 {
   GtkPrintJobPrivate *priv;
+  GError *print_error = NULL;
 
   g_return_val_if_fail (GTK_IS_PRINT_JOB (job), FALSE);
 
@@ -656,12 +657,16 @@ gtk_print_job_send (GtkPrintJob             *job,
   
   gtk_print_job_set_status (job, GTK_PRINT_STATUS_SENDING_DATA);
   lseek (priv->spool_file_fd, 0, SEEK_SET);
-  gtk_print_backend_print_stream (priv->backend,
-                                  job,
+  gtk_print_backend_print_stream (priv->backend, job,
                                  priv->spool_file_fd,
-                                  callback,
-                                  user_data,
-                                 dnotify);
+                                  callback, user_data, dnotify,
+                                 &print_error);
+  if (print_error)
+    {
+      g_propagate_error (error, print_error);
+
+      return FALSE;
+    }
 
   return TRUE;
 }
index d85e45cf5a7a15c2f63c62685a14a491b3295bea..a9eb39a12bfe77d6470c48ddbe19d7437807f609 100644 (file)
@@ -123,7 +123,8 @@ static gboolean             cups_printer_mark_conflicts            (GtkPrinter
                                                                    GtkPrinterOptionSet               *options);
 static GtkPrinterOptionSet *cups_printer_get_options               (GtkPrinter                        *printer,
                                                                    GtkPrintSettings                  *settings,
-                                                                   GtkPageSetup                      *page_setup);
+                                                                   GtkPageSetup                      *page_setup,
+                                                                    GtkPrintCapabilities               capabilities);
 static void                 cups_printer_prepare_for_print         (GtkPrinter                        *printer,
                                                                    GtkPrintJob                       *print_job,
                                                                    GtkPrintSettings                  *settings,
@@ -149,7 +150,8 @@ static void                 gtk_print_backend_cups_print_stream    (GtkPrintBack
                                                                    gint                               data_fd,
                                                                    GtkPrintJobCompleteFunc            callback,
                                                                    gpointer                           user_data,
-                                                                   GDestroyNotify                     dnotify);
+                                                                   GDestroyNotify                     dnotify,
+                                                                   GError                           **error);
 static cairo_surface_t *    cups_printer_create_cairo_surface      (GtkPrinter                        *printer,
                                                                    GtkPrintSettings                  *settings,
                                                                    gdouble                            width,
@@ -374,7 +376,8 @@ gtk_print_backend_cups_print_stream (GtkPrintBackend         *print_backend,
                                     gint                     data_fd,
                                     GtkPrintJobCompleteFunc  callback,
                                     gpointer                 user_data,
-                                    GDestroyNotify           dnotify)
+                                    GDestroyNotify           dnotify,
+                                    GError                 **error)
 {
   GtkPrinterCups *cups_printer;
   CupsPrintStreamData *ps;
@@ -1919,9 +1922,10 @@ handle_group (GtkPrinterOptionSet *set,
 }
 
 static GtkPrinterOptionSet *
-cups_printer_get_options (GtkPrinter       *printer,
-                         GtkPrintSettings *settings,
-                         GtkPageSetup     *page_setup)
+cups_printer_get_options (GtkPrinter           *printer,
+                         GtkPrintSettings     *settings,
+                         GtkPageSetup         *page_setup,
+                         GtkPrintCapabilities  capabilities)
 {
   GtkPrinterOptionSet *set;
   GtkPrinterOption *option;
@@ -2088,8 +2092,8 @@ set_conflicts_from_group (GtkPrinterOptionSet *set,
 }
 
 static gboolean
-cups_printer_mark_conflicts  (GtkPrinter          *printer,
-                             GtkPrinterOptionSet *options)
+cups_printer_mark_conflicts (GtkPrinter          *printer,
+                            GtkPrinterOptionSet *options)
 {
   ppd_file_t *ppd_file;
   int num_conflicts;
index da1a2ffe3ecae1662aca8d252be88e7ffc6f0ce4..f4461ea44edf21af24e326159eacb35a8c1e3a08 100644 (file)
@@ -77,12 +77,13 @@ static void                 file_printer_prepare_for_print         (GtkPrinter
                                                                    GtkPrintJob             *print_job,
                                                                    GtkPrintSettings        *settings,
                                                                    GtkPageSetup            *page_setup);
-static void                 gtk_print_backend_file_print_stream     (GtkPrintBackend         *print_backend,
+static void                 gtk_print_backend_file_print_stream    (GtkPrintBackend         *print_backend,
                                                                    GtkPrintJob             *job,
                                                                    gint                     data_fd,
                                                                    GtkPrintJobCompleteFunc  callback,
                                                                    gpointer                 user_data,
-                                                                   GDestroyNotify           dnotify);
+                                                                   GDestroyNotify           dnotify,
+                                                                   GError                 **error);
 static cairo_surface_t *    file_printer_create_cairo_surface      (GtkPrinter              *printer,
                                                                    GtkPrintSettings        *settings,
                                                                    gdouble                  width,
@@ -293,19 +294,20 @@ file_write (GIOChannel   *source,
 
 static void
 gtk_print_backend_file_print_stream (GtkPrintBackend        *print_backend,
-                                   GtkPrintJob            *job,
-                                   gint                    data_fd,
-                                   GtkPrintJobCompleteFunc callback,
-                                   gpointer                user_data,
-                                   GDestroyNotify          dnotify)
+                                    GtkPrintJob            *job,
+                                    gint                    data_fd,
+                                    GtkPrintJobCompleteFunc callback,
+                                    gpointer                user_data,
+                                    GDestroyNotify          dnotify,
+                                    GError                **error)
 {
-  GError *error;
+  GError *internal_error = NULL;
   GtkPrinter *printer;
   _PrintStreamData *ps;
   GtkPrintSettings *settings;
   GIOChannel *save_channel;  
   const gchar *uri;
-  gchar *filename = NULL; /* quit gcc */
+  gchar *filename = NULL; 
 
   printer = gtk_print_job_get_printer (job);
   settings = gtk_print_job_get_settings (job);
@@ -333,12 +335,13 @@ gtk_print_backend_file_print_stream (GtkPrintBackend        *print_backend,
 
   if (ps->target_fd == -1)
     {
-      error = g_error_new (GTK_PRINT_ERROR,
-                           GTK_PRINT_ERROR_INTERNAL_ERROR, 
-                           g_strerror (errno));
-
-      file_print_cb (GTK_PRINT_BACKEND_FILE (print_backend), error, ps);
+      internal_error = g_error_new (GTK_PRINT_ERROR,
+                                   GTK_PRINT_ERROR_INTERNAL_ERROR, 
+                                   g_strerror (errno));
 
+      file_print_cb (GTK_PRINT_BACKEND_FILE (print_backend), 
+                    internal_error, ps);
+      g_propagate_error (error, internal_error);
       return;
     }
   
index 29a94d6901aa76983ca1e6e2cba9052a3814fdf8..1942131ebe983c5d89d9f9ecfeae64e1a921692c 100644 (file)
@@ -83,7 +83,8 @@ static void                 gtk_print_backend_lpr_print_stream    (GtkPrintBacke
                                                                   gint                     data_fd,
                                                                   GtkPrintJobCompleteFunc  callback,
                                                                   gpointer                 user_data,
-                                                                  GDestroyNotify           dnotify);
+                                                                  GDestroyNotify           dnotify,
+                                                                  GError                 **error);
 
 static void
 gtk_print_backend_lpr_register_type (GTypeModule *module)
@@ -243,8 +244,9 @@ lpr_print_cb (GtkPrintBackendLpr *print_backend,
   if (ps->dnotify)
     ps->dnotify (ps->user_data);
 
-  gtk_print_job_set_status (ps->job,
-                           (error != NULL)?GTK_PRINT_STATUS_FINISHED_ABORTED:GTK_PRINT_STATUS_FINISHED);
+  gtk_print_job_set_status (ps->job, 
+                           error ? GTK_PRINT_STATUS_FINISHED_ABORTED 
+                                 : GTK_PRINT_STATUS_FINISHED);
 
   if (ps->job)
     g_object_unref (ps->job);
@@ -289,7 +291,11 @@ lpr_write (GIOChannel   *source,
 
   if (bytes_read == 0 || error != NULL)
     {
-      lpr_print_cb (GTK_PRINT_BACKEND_LPR (ps->backend), error, user_data);
+      lpr_print_cb (GTK_PRINT_BACKEND_LPR (ps->backend), 
+                   error, user_data);
+
+      if (error)
+       g_error_free (error);
 
       return FALSE;
     }
@@ -305,22 +311,21 @@ gtk_print_backend_lpr_print_stream (GtkPrintBackend        *print_backend,
                                    gint                    data_fd,
                                    GtkPrintJobCompleteFunc callback,
                                    gpointer                user_data,
-                                   GDestroyNotify          dnotify)
+                                   GDestroyNotify          dnotify,
+                                   GError                **error)
 {
-  GError *error;
+  GError *print_error = NULL;
   GtkPrinter *printer;
   _PrintStreamData *ps;
   GtkPrintSettings *settings;
   GIOChannel *send_channel;
   gint argc;  
   gchar **argv;
-  const char *cmd_line;
+  const gchar *cmd_line;
 
   printer = gtk_print_job_get_printer (job);
   settings = gtk_print_job_get_settings (job);
 
-  error = NULL;
-
   cmd_line = gtk_print_settings_get (settings, "lpr-commandline");
   if (cmd_line == NULL)
     cmd_line = LPR_COMMAND;
@@ -335,13 +340,11 @@ gtk_print_backend_lpr_print_stream (GtkPrintBackend        *print_backend,
   ps->err = 0;
 
  /* spawn lpr with pipes and pipe ps file to lpr */
-  if (!g_shell_parse_argv (cmd_line,
-                           &argc,
-                           &argv,
-                           &error))
+  if (!g_shell_parse_argv (cmd_line, &argc, &argv, &print_error))
     {
-      lpr_print_cb (GTK_PRINT_BACKEND_LPR (print_backend),
-                    error, ps);
+      lpr_print_cb (GTK_PRINT_BACKEND_LPR (print_backend), 
+                   print_error, ps);
+      g_propagate_error (error, print_error);
       return;
     }
 
@@ -355,11 +358,11 @@ gtk_print_backend_lpr_print_stream (GtkPrintBackend        *print_backend,
                                  &ps->in,
                                  &ps->out,
                                  &ps->err,
-                                 &error))
+                                 &print_error))
     {
-       lpr_print_cb (GTK_PRINT_BACKEND_LPR (print_backend),
-                    error, ps);
-
+      lpr_print_cb (GTK_PRINT_BACKEND_LPR (print_backend),
+                   print_error, ps);
+      g_propagate_error (error, print_error);
       goto out;
 
     }